const http = uni.$u.http

/**
 * 混入默认个性化配置
 * @param {*} config
 * @returns
 */
function mixinCustom(config) {
  config.custom = Object.assign(
    {
      auth: true,
      toast: true,
      catch: true,
      loading: true
    },
    config.custom || {}
  )
  return config
}

/**
 * 格式化get请求url参数，将对象解析为字符串
 * @param {*} url
 * @param {*} params
 * @returns
 */
function urlFormater(url, params) {
  if (params) {
    let paramList = []
    for (let key in params) {
      paramList.push(key + '=' + params[key])
    }
    return url.indexOf('?') > -1 ? url + '&' + paramList.join('&') : url + '?' + paramList.join('&')
  }
  return url
}

const request = {
  // post提交
  post(url, params, config = {}) {
    config = mixinCustom(config)
    return http.post(url, params, config)
  },
  // get提交
  get(url, params, config = {}) {
    config = mixinCustom(config)
    let path = urlFormater(url, params)
    return http.get(path, config)
  },

  // put提交
  put(url, params, config = {}) {
    config = mixinCustom(config)
    return http.put(url, params, config)
  },

  // delete提交
  delete(url, params, config = {}) {
    config = mixinCustom(config)
    return http.delete(url, params, config)
  }
}

export default request
